#pragma once
#include<stdlib.h>
#include<assert.h>
#include<stdio.h>
typedef int ListDataType;
typedef struct ListNode
{
	ListDataType val;
	struct ListNode* prev;
	struct ListNode* next;
}ListNode;
ListNode* CreateHead(ListDataType x);
ListNode* ListInit();
void ListDestroy(ListNode* phead);
void PushBack(ListNode* phead, ListDataType x);
void PushFront(ListNode* phead, ListDataType x);
void PopBack(ListNode* phead);
void PopFront(ListNode* phead);
ListNode* pos(ListNode* phead, ListDataType x);
void ListInsert(ListNode* pos, ListDataType x);
void ListErease(ListNode* pos);
void ListPrint(ListNode* phead);